查看原文
其他

Neo4j与Python结合,实现网页排名算法与最小社区探测

2018-01-20 zhaikun Python爱好者社区

作者:zhaikun   风控建模屌丝一枚,现居于北京

个人微信公众号:Python数据分析与评分卡建模


前文链接:带你走进图数据库——Neo4j的大门


之前发过一篇文章,Python下的社交网络分析,从天龙八部小说衍生出的google语义分析与gephi社交网络,但如果是只用Python的话,其实是不好用的。今天这篇文章,主要介绍下Neo4j与Python结合,是可以实现网页排名算法与最小社区探测的。


数据获取:关注Python爱好者社区公众号回复天龙八部


首先loadcsv导入Neo4j中



概览下:



图很大,我们先看下网络直径:网络直径的定义是最长的最短路径



好吧,最长是6,还记得6度人脉吗?


回顾下,我们看下 Catelyn与Drogo的最短路径:



也许最短路径不止一条,我们看下这俩人之间所有的最短路径:



看看关键节点的概念:如果节点位于网络中的其它两个节点之间的所有最短路径之中,那么该节点被认为是关键的


这里计算10个网络中的关键节点:



Python中上次告诉了大家怎么计算度中心性,Neo4j也可以:



关系是有权重的,那么在度中心性的基础上,我们计算下加权度中心性:



再计算下中介中心性。什么是中介中心性呢?其实就是识别连接不同集群的节点,中介中心性越高,这个节点越是连接不同集群的。不过计算中介中心性,需要在Neo4j中安装APOC插件。



再计算下接近中心性。类似于中介中心性,这是用来识别集群内部被高度连接的节点。



再看一下网页排名:网页排名算法和下面要说的最小社区探测,以及上面的各项中心性,在Python中都可以实现,但是没有数据库中实现方便、快捷、容易管理。


Neo4j中好像没有直接计算网页排名的插件,我们在Python中计算,添加到Neo4j中。有大神是用Python igraph包:pip install python-igraph,然后



但是我总安装不上,所以用了py2neo和networkx。


先把数据从Neo4j中导入到Python中:



在Python中计算网页排名:



然后把网页排名数据添加到Node节点属性中:



然后导入到Neo4j中



然后我们在Neo4j中看网页排名属性值:



网页排名越大,这个客户坏账的可能性越高。


最后看下社区最小社区探测,选择最小社区节点5,创建了6个社区,Python中计算,导入的Neo4j中。



我们看下社区是1的节点:



创建网页排名、社区后的节点其实可以再可视化一下,但是华而不实,这里就不做了。


这是1个例子,抛砖引玉吧,希望与大家共同交流。

Python爱好者社区历史文章大合集

Python爱好者社区历史文章列表(每周append更新一次)

福利:文末扫码立刻关注公众号,“Python爱好者社区”,开始学习Python课程:

关注后在公众号内回复“课程”即可获取:

小编的Python入门视频课程!!!

崔老师爬虫实战案例免费学习视频。

丘老师数据科学入门指导免费学习视频。

陈老师数据分析报告制作免费学习视频。

玩转大数据分析!Spark2.X+Python 精华实战课程免费学习视频。

丘老师Python网络爬虫实战免费学习视频。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存